vi  / vim的介绍


1. vi 介绍

  • vi 编辑器是所有 Unix 及 Linux 系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器。由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器

2. vim 介绍

  • vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

  • 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具

3. vi 和 vim 的区别

  • vi 相当于 window 下的 记事本

  • vim 相当于 代码编辑器

4. vi/vim 的基本概念

  • 基本上 vi 和 vim 可以分为三种状态,分别是 命令模式(command mode)、插入模式(Insert mode) 底行模式(last line mode),各模式的功能区分如下

  • 命令行模式 (Command Mode)

    • 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 插入模式(Insert mode)下,或者到 底行模式(last line mode)

  • 插入模式(Insert Mode)

    • 只有在 插入模式(Insert mode) 下,才可以做文字输入,按「ESC」键可回到 命令行模式(Command Mode)

  • 底行模式(Last Line Mode)

    • 将文件保存或退出 vi 编辑器,也可以设置编辑环境,如寻找字符串、列出行号……等

  • 不过一般我们在使用时把 vi 简化成两个模式,就是将 底行模式(Last Line Mode) 也算入 命令行模式 (Command Mode)

5. vi/vim 的按键图


6. vi/vim 的按键图


vi 的使用


1. 下载 vim

  • 如果当前的 Linux 没有 vim,就需要自行下载

yum install vim -y

1. 进入命令行模式

  • 进入命令行模式也称为打开 vi/vim 编辑器 或 打开文件

  • 命令: 

    • vi/vim 文件名.后缀名

    • vi/vim 路径/文件名.后缀名

vi test.py

vim test.py

  • 注意: 如果通过 vi/vim 打开一个不存在的文件,那么 vi/vim 就会在当前或指定的路径下创建该文件

    • 可以通过观察 vi/vim 下的文件名后面是否带有 [New File],如果有就代表该文件不是已存在的文件而是一个通过 vi/vim 所创建的文件


2. 命令模式下的相关命令

  • 在命令模式下敲击键盘动作会被vi/vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令执行

  • 移动光标

h 或 向左箭头键(←)
光标向左移动一个字符
j 或 向下箭头键(↓)
光标向下移动一个字符
k 或 向上箭头键(↑)
光标向上移动一个字符
l 或 向右箭头键(→) 
光标向右移动一个字符
w
移动光标到下一个单词的首字母上
e
移动光标到下一个单词的尾字母上
b
移动光标到上一个单词
数字0
移动光标到本行开头
$
移动光标到本行结尾
H
移动光标到屏幕首行
M
移动到光标到屏幕的中间一行
L
移动光标到屏幕的尾行
gg
移动光标到文档的首行
G
移动光标到文档尾行

  • 查找

/需要查找的内容
注意: 内容无需加'' 或 "" 进行查找
  • 在整篇文档中搜索你要查找的字符串,向下查找
  • 按下 “n” 查找下一处,按下 “N” 查找上一处 
?需要查找的内容
注意: 内容无需加'' 或 "" 进行查找
  • 在整篇文档中搜索你要查找的字符串,向上查找
  • 按下 “n” 查找下一处,按下 “N” 查找上一处 
*
  • 查找整个文档,匹配光标所在的所有单词,向下查找
  • 按下 “n” 查找下一处,按下 “N” 查找上一处 
  • 查找整个文档,匹配光标所在的所有单词,向上查找
  • 按下 “n” 查找下一处,按下 “N” 查找上一处 
gd
  • 查找整个文档,匹配光标所在的所有单词,并停留在非注释的第一个匹配上
  • 按下 “n” 查找下一处,按下 “N” 查找上一处 
%
  • 找到闭合符号的另一半(如: ()、[]、<>、等)
  • 使用方式: 将光标移动到其中一个闭合符号上,然后按下 % 即可查找到另一半的闭合符号

  • 复制、粘贴、删除

yy
拷贝光标所在行
p
粘贴yy所复制的内容
dd
删除光标所在行
D
删除当前光标到行尾的内容
dG
删除当前行到文档尾部的内容
x
删除光标所在的字符
u
撤销上一步的操作

  • 数字 与 命令

数字yy
3yy -> 拷贝光标所在的后3行
数字dd
5dd -> 删除光标所在的后5行
数字j
5j -> 将当前光标先下移动5行
数字k
5k -> 将当前光标先上移动5行
数字h
10h -> 将当前光标先左移动10个字符
数字l
10l -> 将当前光标先右移动10个字符
数字空格
10空格 -> 将当前光标先右移动10个字符

2. 进入插入模式

  • 在命令行模式下按下对应的字母进入插入模式,且只有在插入模式下才能对文件进行编辑

i
在光标前
I
在光标行首
a
光标后
A
在光标行尾
o
在当前行之下新开一行
O
在当前行之上新开一行
r
替换当前字符
R
替换当前字符及其后的字符,直至按ESC键
s
从当前光标位置处开始,以输入的文本替代指定数目的字符
S
删除指定数目的行,并以所输入文本代替之


3. 进入底行模式

  • 如果在命令行模式下,按下 “:” 进入底行模式

  • 如果在插入模式下,按下 “esc” 进入 命令行模式,然后按下 “:” 进入底行模式

  • 底行模式的相关命令

: 符号
代表进入底行模式
! 符号
代表强制的
:w
保存文件
:w!
强制保存文件
:q
退出 vi 编辑器,当文件被修改后且没有保存文件是无法通过 :q 直接退出的,需要通过 :q! 强制退出
:q!
强制退出 vi 编辑器
:wq
保存并退出 vi 编辑器
:x
保存并退出 vi 编辑器,等同于 :wq
:wq!
强制保存并退出 vi 编辑器
:set nu
显示行号
:set nonu
取消行号
:数字
将光标定位到你所指定的行号上
:! 命令
  • 暂时离开vi/vim,执行你所指定的指令,然后按回车回到 vi / vim
  • :! ip a -> 临时看一下ip信息,然后按回车回到 vi / vim
esc按键
退出底行模式